// 1 引入 mongoose
const mongoose = require('mongoose')

// 2 连接 mongodb
mongoose.connect('mongodb://localhost/unicom', { useNewUrlParser: true })

// 3 监控连接的状态
const db = mongoose.connection
// 3.1 连接失败
db.on('error', console.error.bind(console, 'connection error:'))

// 3.2 连接成功
db.once('open', function () {
    // 连接成功
    console.log('-------- connect mongodb success -------')

    // 4 创建 Schema 对象 规定存储的结构
    // 类似与 mysql 中的表结构设计
    const kittySchema = new mongoose.Schema({
        name: String
    });

    // 4.1 给 创建的 kittySchema 添加方法
    kittySchema.methods.speak = () => {
        const greeting = this.name
            ? "Meow name is " + this.name
            : "I don't have a name";
        console.log(greeting);
    }

    // 5 根据创建的 Schema 创建一个模型  类似 javabean
    const Kitten = mongoose.model('Kitten', kittySchema);

    // 6 创建一个具体的数据对象
    var fluffy = new Kitten({ name: 'fluffy3' });
    console.log(fluffy.name); // 'fluffy'

    // 7 将创建的数据对象持久化到 mongodb
    fluffy.save().then(fluffy => {
        console.log('------- save success -------')
        fluffy.speak()
    }).catch(err => {
        console.log(err)
    })

    // 8 查询持久化的数据
    Kitten.find().then((kittens) => {
        console.log('------- find success -------')
        console.log(kittens)
    }).catch(err => {
        console.log(err)
    })
})